// 引入vue
import Vue from "vue";
// 引入 Vue Router
import VueRouter from "vue-router";
// 使用VueRouter
Vue.use(VueRouter);

// 引入路由配文件
import routes from "./routers";

// 先把VueRouter 原型对象的push保存一份
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;
// 重写push和replace方法
VueRouter.prototype.push = function (localhost, resolve, reject) {
    if (resolve && reject) {
        // call 和 apply区别
        // 相同点：都可以调用函数一次，都可以篡改函数上下文一次
        // 不同点：call 与 apply传递参数：call传递参数用逗号隔开，apply方法执行，传递数组。
        originPush.call(this, localhost, resolve, reject);
    } else {
        originPush.call(this, localhost, () => {}, () => { });
    }
}
VueRouter.prototype.replace = function (localhost, resolve, reject) {
    if (resolve && reject) {
        originReplace.call(this, localhost, resolve, reject);
    } else {
        originReplace.call(this, localhost, () => { }, () => { });
    }
}

// 配置路由
// 暴露一个VueRouter的实例对象
let router = new VueRouter({
    // 配置路由
    routes,
    scrollBehavior(to,from,savedPosition){
        // return 期望滚动到哪里
        // 返回的y:0代表着滚动条在最上方
        return {y:0}
    }
})
// 添加路由守卫

export default router;